home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
dskut
/
mmv10.zip
/
MMV.MAN
< prev
next >
Wrap
Text File
|
1989-11-22
|
16KB
|
463 lines
MMV(1) Programmer's Manual MMV(1)
NAME
mmv - move/copy/append multiple files by wildcard patterns
SYNOPSIS
mmv [-m|x|r|c|o|a|z] [-h] [-d|p] [-g|t] [-v|n] [from to]
mmvpatch [executable]
DESCRIPTION
_M_m_v moves (or copies, or appends, as specified) each source
file matching a _f_r_o_m pattern to the target name specified by
the _t_o pattern. This multiple action is performed safely,
i.e. without any unexpected deletion of files due to colli-
sions of target names with existing filenames or with other
target names. Furthermore, before doing anything, _m_m_v
attempts to detect any errors that would result from the
entire set of actions specified and gives the user the
choice of either proceeding by avoiding the offending parts
or aborting.
The Task Options
Whether _m_m_v moves, copies, or appends is governed by the
first set of options given above. If none of these are
specified, a default (patchable by _m_m_v_p_a_t_c_h, and initially
-x) determines the task.
The task option choices are:
-m : move source file to target name. Both must be on the
same device. Will not move directories.
-x : same as -m, except cross-device moves are done by copy-
ing, then deleting source. When copying, sets the
attributes and file modification time of the target
file to that of the source file.
-r : rename source file or directory to target name. The
target name must not include a path: the file remains
in the same directory in all cases. This option is the
only way of renaming directories under _m_m_v. It is only
available under DOS version 3.0 or higher.
-c : copy source file to target name. Sets the file modifi-
cation time and attributes of the target file to that
of the source file, regardless of whether the target
file already exists. Chains and cycles (to be
explained below) are not allowed.
-o : overwrite target name with source file. If target file
exists, its attributes are left unchanged. If not, it
is created with ordinary attributes unrelated to the
source file's attributes. In either case, the file
Printed 11/21/89 November 20, 1989 (v1.0) 1
MMV(1) Programmer's Manual MMV(1)
modification time is set to the current time.
-a : append contents of source file to target name. Target
file modification time is set to the current time. If
target file does not exist, it is created with attri-
butes set as under -o. Unlike all other options, -a
allows multiple source files to have the same target
name, e.g. "mmv -a *.c big" will append all ".c" files
to "big". Chains and cycles are also allowed, so "mmv
-a f f" will double up "f".
-z : same as -a, but if the target file exists, and its last
character is a ^Z, and the source file is not empty,
this ^Z is truncated before doing the append.
Only one of these option may be given, and it applies to all
matching files. Remaining options need not be given
separately, i.e. "mmv -mk" is allowed.
Multiple Pattern Pairs
Multiple _f_r_o_m -- _t_o pattern pairs may be specified by omit-
ting the pattern pair on the command line, and entering them
on the standard input, one pair per line. (If a pattern
pair is given on the command line, the standard input is not
read.) Thus,
mmv
a b
c d
would rename "a" to "b" and "c" to "d". If a file can be
matched to several of the given _f_r_o_m patterns, the _t_o pat-
tern of the first matching pair is used. Thus,
mmv
a b
a c
would give the error message "a -> c : no match" because
file "a" (even if it exists) was already matched by the
first pattern pair.
The _F_r_o_m Pattern
The _f_r_o_m pattern is a filename with embedded wildcards: '*',
'?', '['...']', '!', and ';'. The first three have their
usual _s_h(1) meanings of, respectively, matching any string
of characters, matching any single character, and matching
any one of a set of characters.
Printed 11/21/89 November 20, 1989 (v1.0) 2
MMV(1) Programmer's Manual MMV(1)
Between the '[' and ']', a range from character 'a' through
character 'z' is specified with "a-z". The set of matching
characters can be negated by inserting a '^' after the '['.
Thus, "[^b-e2-5_]" will match any character but 'b' through
'e', '2' through '5', and '_'.
Unlike DOS wildcards, all mmv wildcards (except for cases
listed below) can occur anywhere in the pattern, whether
preceding or following explicit characters or other wild-
cards. For example, the pattern "*z\foo.bar" will search
for files named "foo.bar" in all subdirectories whose names
end in 'z'. However, no wildcards can occur in the drive
letter.
The character '.' is not matched by any of '*', '?', or
'['...']'. Thus, the pattern "*" will only match files with
a null extension. To save yourself some typing, use the '!'
wildcard instead, which matches the same as "*.*", except it
is assigned only one wildcard index (see below). Thus, both
"f!" and "f*.*" will match all of "f", "f.ext", "foo", and
"foo.ext", while "f*" will match only the first and the
third.
Note that paths are allowed in the patterns, and wildcards
may be intermingled with slashes arbitrarily. The ';' wild-
card is useful for matching files at any depth in the direc-
tory tree. It matches the same as "*\" repeated any number
of times, including zero, and can only occur either at the
beginning of the pattern or following a '\'. Thus ";*.c"
will match all ".c" files in or below the current directory,
while "\;*.c" will match them anywhere on the file system.
Since matching a directory under a task option other than -r
or -s would result in an error, tasks other than -r and -s
match directories only against completely explicit _f_r_o_m pat-
terns (i.e. not containing wildcards). Under -r and -s,
this applies only to "." and "..".
Hidden and system files are also only matched against com-
pletely explicit _f_r_o_m patterns. However, if -h is speci-
fied, they are matched normally.
The _T_o Pattern
The _t_o pattern is a filename with embedded _w_i_l_d_c_a_r_d _i_n_d_e_x_e_s,
where an index consists of the character '#' followed by a
string of digits. When a source file matches a _f_r_o_m pat-
tern, a target name for the file is constructed out of the
_t_o pattern by replacing the wildcard indexes by the actual
characters that matched the referenced wildcards in the
source name. Thus, if the _f_r_o_m pattern is "abc*.*" and the
_t_o pattern is "xyz#2.#1", then "abc.txt" is targeted to
Printed 11/21/89 November 20, 1989 (v1.0) 3
MMV(1) Programmer's Manual MMV(1)
"xyztxt.". (The first '*' matched "", and the second
matched "txt".) Similarly, for the pattern pair ";*.[clp]"
-> "#1#3\#2", "foo1\foo2\prog.c" is targeted to
"foo1\foo2\c\prog". Note that there is no '\' following the
"#1" in the _t_o pattern, since the string matched by any ';'
is always either empty or ends in a '\'.